package cc.cc4414.cc02.system.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cc.cc4414.cc02.system.entity.Authority;
import cc.cc4414.cc02.system.entity.Resource;

/**
 * @author cc 2018年7月25日
 */
public interface ResourceService {
	/**
	 * 查询所有资源信息
	 * 
	 * @return 所有资源
	 */
	List<Resource> findAll();

	/**
	 * 通过资源id查找能访问该资源的所有权限
	 * 
	 * @param resourceId
	 *            资源id
	 * @return 能访问该资源的所有权限
	 */
	List<Authority> findAuthorityByResourceId(Long resourceId);

	/**
	 * 新增资源
	 * 
	 * @param resource
	 *            新增的资源
	 */
	void save(Resource resource);

	/**
	 * 通过资源id删除资源
	 * 
	 * @param resourceId
	 *            资源id
	 */
	@Transactional
	void delete(Long resourceId);

	/**
	 * 修改访问id为resourceId的资源的所需权限
	 * 
	 * @param resourceId
	 *            资源id
	 * @param authorityIds
	 *            能访问该资源的所有权限id
	 */
	@Transactional
	void updateResourceAuthority(Long resourceId, Long[] authorityIds);

	/**
	 * 修改资源
	 * 
	 * @param resource
	 *            修改后的资源
	 */
	void update(Resource resource);
}
